package echo.netty.eventLoopGroup;

import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.util.NettyRuntime;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.TimeUnit;

/**
 * @author： zhangnan
 * @date： 2025/5/6 14:52
 * @description： TODO
 * @modifiedBy：
 * @version: 1.0
 */
@Slf4j
public class TestEventLoop {

    public static void main(String[] args) {
        // 普通任务，定时任务
//        DefaultEventLoopGroup group = new DefaultEventLoopGroup();
        // io事件，普通任务，定时任务
        NioEventLoopGroup group = new NioEventLoopGroup(NettyRuntime.availableProcessors());
        log.info("cpu: {}", NettyRuntime.availableProcessors());
        // 2. 获取下一个事件循环对象
        System.out.println(group.next());
        // 3. 执行普通任务
//        group.next().submit(() -> {
//            try {
//                Thread.sleep(1000);
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
//            log.debug("ok");
//        });
        // 4. 执行定时任务,
        // 参数2是初始延迟时间，如果是0就是立刻执行;
        // 参数3是间隔执行时间，每隔多长时间执行一次
        group.next().scheduleAtFixedRate(()->{
            log.debug("ok");
        },1L, 1,TimeUnit.SECONDS);
        log.debug("main end");
    }


}
